package tsb.dom;

import java.util.Iterator;

/**
 *
 * @author Santiago
 */
public class Elemento extends Compuesto {
    private ValorAtributo valor;
    private ListaAtributos listaAtributos;

    public Elemento(String nombre) {
        super(nombre);
        valor = new ValorAtributo();
        listaAtributos = new ListaAtributos();
    }

    public ValorAtributo getValor() {
        return valor;
    }
    
    public void setValor(ValorAtributo valor){
        this.valor = valor;
    }

    public void agregarAtributo(Atributo atributo){
        listaAtributos.atributos().addElement(atributo);
    }

    public Boolean tieneAtributos(){
        return (listaAtributos.atributos().size() > 0);
    }

    public Iterator<Atributo> getAtributos(){
        return listaAtributos.atributos().iterator();
    }

    @Override
    public String toString() {
        String aux;
        Iterador iterador = null;
        aux  = "\n--------------------------------";
        aux += "\n#ELEMENTO# : " + this.getNombre();

        if(!this.getValor().getValor().equals("")){
            aux +=  "\n#CONTENIDO# : " + this.getValor().getValor();
        }
        if(listaAtributos.atributos().size()>0){
            aux +=  "\n#ATRIBUTOS#";
            for (Iterator it = listaAtributos.atributos().iterator(); it.hasNext();)
            {
                Atributo a = (Atributo)it.next();
                aux += "\n\t " + a.getNombre() + "=" + a.getValor().getValor();
            }
        }
        if(this.tieneHijos()){
            iterador = this.IteradorDeComponentes();
            iterador.Primero();
            
            while(iterador.HayMas()){
                Elemento e = (Elemento)iterador.ElementoActual();
                aux += e.toString();
                iterador.Siguiente();
            }
        }
        return (aux);
    }
}
